{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.2.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.0.1\u001b[0m\n",
      "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n"
     ]
    }
   ],
   "source": [
    "! pip install -U -q open-deep-research"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0.10\n"
     ]
    }
   ],
   "source": [
    "import open_deep_research   \n",
    "print(open_deep_research.__version__) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import Image, display\n",
    "from langgraph.types import Command\n",
    "from langgraph.checkpoint.memory import MemorySaver\n",
    "from open_deep_research.graph import builder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "memory = MemorySaver()\n",
    "graph = builder.compile(checkpointer=memory)\n",
    "display(Image(graph.get_graph(xray=1).draw_mermaid_png()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os, getpass\n",
    "\n",
    "def _set_env(var: str):\n",
    "    if not os.environ.get(var):\n",
    "        os.environ[var] = getpass.getpass(f\"{var}: \")\n",
    "\n",
    "# Set the API keys used for any model or search tool selections below, such as:\n",
    "_set_env(\"OPENAI_API_KEY\")\n",
    "_set_env(\"ANTHROPIC_API_KEY\")\n",
    "_set_env(\"TAVILY_API_KEY\")\n",
    "_set_env(\"GROQ_API_KEY\")\n",
    "_set_env(\"PERPLEXITY_API_KEY\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "Please provide feedback on the following report plan. \n",
       "                        \n",
       "\n",
       "Section: Introduction\n",
       "Description: Provides an overall introduction to the AI inference market and sets the context for the focus on Fireworks, Together.ai, and Groq.\n",
       "Research needed: No\n",
       "\n",
       "\n",
       "Section: AI Inference Market Overview\n",
       "Description: Discusses the general landscape of the AI inference market, including key trends, technologies, and challenges facing LLM API providers.\n",
       "Research needed: Yes\n",
       "\n",
       "\n",
       "Section: Fireworks AI Overview and Market Position\n",
       "Description: Explores Fireworks AI’s technology, including its proprietary FireAttention inference engine, performance metrics, and data privacy compliance, as well as its role in contemporary AI development platforms.\n",
       "Research needed: Yes\n",
       "\n",
       "\n",
       "Section: Together.ai Overview and Market Position\n",
       "Description: Covers Together.ai’s platform features, competitive advantages, and how it compares to other AI inference providers. Highlights its market positioning in delivering high-quality open-source models.\n",
       "Research needed: Yes\n",
       "\n",
       "\n",
       "Section: Groq Overview and Market Position\n",
       "Description: Examines Groq’s innovative offering with its Tensor Streaming Processor, focusing on high-performance, low-latency inference, and its tailored approach to AI accelerators for enterprise applications.\n",
       "Research needed: Yes\n",
       "\n",
       "\n",
       "Section: Comparative Analysis of Fireworks AI, Together.ai, and Groq\n",
       "Description: Provides a direct comparison between the three platforms in terms of performance, API integration, latency, scalability, and suitability for various AI use cases.\n",
       "Research needed: Yes\n",
       "\n",
       "\n",
       "Section: Conclusion\n",
       "Description: Summarizes the main findings from the report, distilling key takeaways into a concise list or table that emphasizes the strengths and unique market positions of each platform.\n",
       "Research needed: No\n",
       "\n",
       "\n",
       "                        \n",
       "Does the report plan meet your needs?\n",
       "Pass 'true' to approve the report plan.\n",
       "Or, provide feedback to regenerate the report plan:"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import uuid \n",
    "from IPython.display import Markdown\n",
    "\n",
    "REPORT_STRUCTURE = \"\"\"Use this structure to create a report on the user-provided topic:\n",
    "\n",
    "1. Introduction (no research needed)\n",
    "   - Brief overview of the topic area\n",
    "\n",
    "2. Main Body Sections:\n",
    "   - Each section should focus on a sub-topic of the user-provided topic\n",
    "   \n",
    "3. Conclusion\n",
    "   - Aim for 1 structural element (either a list of table) that distills the main body sections \n",
    "   - Provide a concise summary of the report\"\"\"\n",
    "\n",
    "# Claude 3.7 Sonnet for planning with perplexity search\n",
    "thread = {\"configurable\": {\"thread_id\": str(uuid.uuid4()),\n",
    "                           \"search_api\": \"perplexity\",\n",
    "                           \"planner_provider\": \"anthropic\",\n",
    "                           \"planner_model\": \"claude-3-7-sonnet-latest\",\n",
    "                           \"writer_provider\": \"anthropic\",\n",
    "                           \"writer_model\": \"claude-3-5-sonnet-latest\",\n",
    "                           \"max_search_depth\": 2,\n",
    "                           \"report_structure\": REPORT_STRUCTURE,\n",
    "                           }}\n",
    "\n",
    "# DeepSeek-R1-Distill-Llama-70B for planning and llama-3.3-70b-versatile for writing\n",
    "thread = {\"configurable\": {\"thread_id\": str(uuid.uuid4()),\n",
    "                           \"search_api\": \"tavily\",\n",
    "                           \"planner_provider\": \"groq\",\n",
    "                           \"planner_model\": \"deepseek-r1-distill-llama-70b\",\n",
    "                           \"writer_provider\": \"groq\",\n",
    "                           \"writer_model\": \"llama-3.3-70b-versatile\",\n",
    "                           \"report_structure\": REPORT_STRUCTURE,\n",
    "                           \"max_search_depth\": 1,}\n",
    "                           }\n",
    "\n",
    "# Fast config (less search depth) with o3-mini for planning and Claude 3.5 Sonnet for writing\n",
    "thread = {\"configurable\": {\"thread_id\": str(uuid.uuid4()),\n",
    "                           \"search_api\": \"tavily\",\n",
    "                           \"planner_provider\": \"openai\",\n",
    "                           \"planner_model\": \"o3-mini\",\n",
    "                           \"writer_provider\": \"anthropic\",\n",
    "                           \"writer_model\": \"claude-3-5-sonnet-latest\",\n",
    "                           \"max_search_depth\": 1,\n",
    "                           \"report_structure\": REPORT_STRUCTURE,\n",
    "                           }}\n",
    "\n",
    "# Create a topic\n",
    "topic = \"Overview of the AI inference market with focus on Fireworks, Together.ai, Groq\"\n",
    "\n",
    "# Run the graph until the interruption\n",
    "async for event in graph.astream({\"topic\":topic,}, thread, stream_mode=\"updates\"):\n",
    "    if '__interrupt__' in event:\n",
    "        interrupt_value = event['__interrupt__'][0].value\n",
    "        display(Markdown(interrupt_value))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "Please provide feedback on the following report plan. \n",
       "                        \n",
       "\n",
       "Section: Introduction\n",
       "Description: Provides a brief overview of the AI inference market, its relevance, and introduces the three key players: Fireworks, Together.ai, and Groq.\n",
       "Research needed: No\n",
       "\n",
       "\n",
       "Section: Fireworks AI Overview\n",
       "Description: Covers Fireworks AI’s offerings in the inference market, including key performance metrics, product features, model quality, speed, and latency. Emphasizes revenue estimates (ARR) as part of its market positioning.\n",
       "Research needed: Yes\n",
       "\n",
       "\n",
       "Section: Together.ai Overview\n",
       "Description: Explores Together.ai’s role within the AI inference space. Discusses product features, integration details, user reviews, and performance metrics along with ARR revenue estimates.\n",
       "Research needed: Yes\n",
       "\n",
       "\n",
       "Section: Groq AI Overview\n",
       "Description: Examines Groq’s AI inference solutions with a focus on benchmark performance, inference speed, and cost efficiency. Includes an analysis of ARR revenue and how its technical performance shapes its market position.\n",
       "Research needed: Yes\n",
       "\n",
       "\n",
       "Section: Market Comparison and Trends\n",
       "Description: Provides a comparative analysis highlighting the strengths, weaknesses, and differentiating factors of Fireworks, Together.ai, and Groq. Discusses trends like cost, performance metrics, and revenue (ARR) estimates.\n",
       "Research needed: Yes\n",
       "\n",
       "\n",
       "Section: Conclusion\n",
       "Description: Summarizes key findings from the individual sections and the comparative analysis. Offers a concise distillation of the market landscape using a summary table or list to highlight major points including ARR insights.\n",
       "Research needed: No\n",
       "\n",
       "\n",
       "                        \n",
       "Does the report plan meet your needs?\n",
       "Pass 'true' to approve the report plan.\n",
       "Or, provide feedback to regenerate the report plan:"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Pass feedback to update the report plan  \n",
    "async for event in graph.astream(Command(resume=\"Include individuals sections for Together.ai, Groq, and Fireworks with revenue estimates (ARR)\"), thread, stream_mode=\"updates\"):\n",
    "    if '__interrupt__' in event:\n",
    "        interrupt_value = event['__interrupt__'][0].value\n",
    "        display(Markdown(interrupt_value))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'human_feedback': None}\n",
      "\n",
      "\n",
      "{'build_section_with_web_research': {'completed_sections': [Section(name='Groq AI Overview', description='Examines Groq’s AI inference solutions with a focus on benchmark performance, inference speed, and cost efficiency. Includes an analysis of ARR revenue and how its technical performance shapes its market position.', research=True, content=\"## Groq AI Overview\\n\\nGroq has emerged as a significant player in the AI inference market with its innovative Language Processing Unit (LPU) technology. Independent benchmarks from ArtificialAnalysis.ai demonstrate Groq's impressive performance, with their Llama 2 Chat (70B) API achieving 241 tokens per second - more than double the speed of competing providers [1]. Their total response time for 100 output tokens is just 0.8 seconds, positioning them as a leader in inference speed [2].\\n\\nThe company's core technology, the Tensor Streaming Processor (TSP), delivers 500-700 tokens per second on large language models, representing a 5-10x improvement over Nvidia's latest data center GPUs [3]. This performance advantage has positioned Groq as a compelling alternative in the inference market, particularly for startups seeking cost-effective solutions [4].\\n\\nWith approximately 300 employees, 60% of whom are software engineers, Groq has evolved beyond hardware to become a comprehensive AI solutions provider [5]. The company is strategically positioned to capture a share of the growing inference chip market, which is projected to reach $48 billion by 2027 [6].\\n\\n### Sources\\n[1] https://groq.com/artificialanalysis-ai-llm-benchmark-doubles-axis-to-fit-new-groq-lpu-inference-engine-performance-results/\\n[2] https://groq.com/inference/\\n[3] https://sacra.com/c/groq/\\n[4] https://venturebeat.com/ai/ai-chip-race-groq-ceo-takes-on-nvidia-claims-most-startups-will-use-speedy-lpus-by-end-of-2024/\\n[5] https://www.businessinsider.com/groq-nvidia-software-advantage-cuda-moat-challenge-inference-2024-12?op=1\\n[6] https://generativeaitech.substack.com/p/groq-and-its-impact-on-ai-inference\")]}}\n",
      "\n",
      "\n",
      "{'build_section_with_web_research': {'completed_sections': [Section(name='Market Comparison and Trends', description='Provides a comparative analysis highlighting the strengths, weaknesses, and differentiating factors of Fireworks, Together.ai, and Groq. Discusses trends like cost, performance metrics, and revenue (ARR) estimates.', research=True, content=\"## Market Comparison and Trends\\n\\nThe AI inference market shows distinct positioning among key players Fireworks, Together.ai, and Groq. Fireworks AI differentiates itself through superior speed, leveraging its proprietary FireAttention inference engine for text, image, and audio processing, while maintaining HIPAA and SOC2 compliance for data privacy [1]. Together.ai has demonstrated remarkable growth, reaching an estimated $130M in annualized recurring revenue (ARR) in 2024, representing a 400% year-over-year increase [2].\\n\\nBoth Fireworks and Together.ai focus on providing high-quality open-source models that can compete with proprietary alternatives [1]. Pricing structures vary across providers, with model costs ranging from $0.20 to $3.00 per million tokens for different model sizes and capabilities [3]. Together.ai's business model benefits from GPU price commoditization, allowing them to maintain competitive token pricing while focusing on developer experience and reliable inference across diverse open-source models [2].\\n\\nGroq distinguishes itself by offering quick access to various open-source AI models from major providers like Google, Meta, OpenAI, and Mistral through the OpenRouter API platform [4]. The market shows a trend toward comprehensive platform offerings, with providers competing on factors such as model variety, inference speed, and specialized features for different use cases.\\n\\n### Sources\\n[1] Top 10 AI Inference Platforms in 2025: Comparing LLM API Providers: https://www.helicone.ai/blog/llm-api-providers\\n[2] Together AI revenue, valuation & growth rate | Sacra: https://sacra.com/c/together-ai/\\n[3] Models Leaderboard : Comparison of AI Models & API Providers - Groq AI: https://groq-ai.com/models/\\n[4] Pricing: Compare Groq API Pricing With Other API Providers: https://groq-ai.com/pricing/\")]}}\n",
      "\n",
      "\n",
      "{'build_section_with_web_research': {'completed_sections': [Section(name='Together.ai Overview', description='Explores Together.ai’s role within the AI inference space. Discusses product features, integration details, user reviews, and performance metrics along with ARR revenue estimates.', research=True, content=\"## Together.ai Overview\\n\\nTogether.ai is a comprehensive AI acceleration platform that has quickly emerged as a significant player in the AI inference space since its founding in 2022 [1]. The platform enables developers to access over 200 AI models, offering high-performance inference capabilities with optimized infrastructure [2].\\n\\nThe company's Inference Engine, built on NVIDIA Tensor Core GPUs, delivers impressive performance metrics, achieving 117 tokens per second on Llama-2-70B-Chat models [3]. Their model offerings include high-quality options like Llama 3.3 70B Turbo and Llama 3.1 405B Turbo, with some models achieving sub-100ms latency [4].\\n\\nTogether.ai has demonstrated remarkable growth, with estimates suggesting $130M in annualized recurring revenue (ARR) in 2024, representing a 400% year-over-year increase [5]. The platform has received positive user feedback, maintaining a 4.8/5.0 rating based on 162 user reviews [6].\\n\\nThe company differentiates itself through competitive pricing and technical innovations, incorporating advanced features like token caching, load balancing, and model quantization [2]. Users particularly praise the platform's straightforward API, reliable performance, and competitive pricing compared to alternatives [7].\\n\\n### Sources\\n[1] https://siliconvalleyjournals.com/company/together-ai/\\n[2] https://www.keywordsai.co/blog/top-10-llm-api-providers\\n[3] https://www.together.ai/blog/together-inference-engine-v1\\n[4] https://artificialanalysis.ai/providers/togetherai\\n[5] https://sacra.com/c/together-ai/\\n[6] https://www.featuredcustomers.com/vendor/together-ai\\n[7] https://www.trustpilot.com/review/together.ai\")]}}\n",
      "\n",
      "\n",
      "{'build_section_with_web_research': {'completed_sections': [Section(name='Fireworks AI Overview', description='Covers Fireworks AI’s offerings in the inference market, including key performance metrics, product features, model quality, speed, and latency. Emphasizes revenue estimates (ARR) as part of its market positioning.', research=True, content='## Fireworks AI Overview\\n\\nFireworks AI has established itself as a significant player in the AI inference market, offering a comprehensive platform for deploying and managing AI models. The company provides access to various high-performance models, including Llama 3.1 405B and Qwen2.5 Coder 32B, which represent their highest quality offerings [1]. Their platform demonstrates impressive performance metrics, with some models achieving speeds up to 300 tokens per second for serverless deployments [2].\\n\\nThe company has gained substantial market traction, recently securing $52 million in Series B funding that values the company at $552 million [3]. With an annual revenue of $6 million and a team of 60 employees, Fireworks AI serves notable clients including DoorDash, Quora, and Upwork [4, 5].\\n\\nTheir platform differentiates itself through specialized features like FP8 quantization for large models and continuous batching capabilities [6]. Fireworks claims to offer approximately 3x faster speeds compared to competitors like Hugging Face TGI when using the same GPU configuration [2]. The company focuses on providing smaller, production-grade models that can be deployed privately and securely, rather than generic mega models [5].\\n\\n### Sources\\n[1] Fireworks: Models Intelligence, Performance & Price: https://artificialanalysis.ai/providers/fireworks\\n[2] Fireworks Platform Spring 2024 Updates: https://fireworks.ai/blog/spring-update-faster-models-dedicated-deployments-postpaid-pricing\\n[3] Fireworks AI Raises $52M in Series B Funding: https://siliconvalleyjournals.com/fireworks-ai-raises-52m-in-series-b-funding-to-expand-genai-inference-platform/\\n[4] Fireworks AI: Contact Details, Revenue, Funding: https://siliconvalleyjournals.com/company/fireworks-ai/\\n[5] Fireworks AI Valued at $552 Million After New Funding Round: https://www.pymnts.com/news/investment-tracker/2024/fireworks-ai-valued-552-million-dollars-after-new-funding-round/\\n[6] Inference performance - Fireworks AI Docs: https://docs.fireworks.ai/faq/models/inference/performance')]}}\n",
      "\n",
      "\n",
      "{'gather_completed_sections': {'report_sections_from_research': \"\\n============================================================\\nSection 1: Fireworks AI Overview\\n============================================================\\nDescription:\\nCovers Fireworks AI’s offerings in the inference market, including key performance metrics, product features, model quality, speed, and latency. Emphasizes revenue estimates (ARR) as part of its market positioning.\\nRequires Research: \\nTrue\\n\\nContent:\\n## Fireworks AI Overview\\n\\nFireworks AI has established itself as a significant player in the AI inference market, offering a comprehensive platform for deploying and managing AI models. The company provides access to various high-performance models, including Llama 3.1 405B and Qwen2.5 Coder 32B, which represent their highest quality offerings [1]. Their platform demonstrates impressive performance metrics, with some models achieving speeds up to 300 tokens per second for serverless deployments [2].\\n\\nThe company has gained substantial market traction, recently securing $52 million in Series B funding that values the company at $552 million [3]. With an annual revenue of $6 million and a team of 60 employees, Fireworks AI serves notable clients including DoorDash, Quora, and Upwork [4, 5].\\n\\nTheir platform differentiates itself through specialized features like FP8 quantization for large models and continuous batching capabilities [6]. Fireworks claims to offer approximately 3x faster speeds compared to competitors like Hugging Face TGI when using the same GPU configuration [2]. The company focuses on providing smaller, production-grade models that can be deployed privately and securely, rather than generic mega models [5].\\n\\n### Sources\\n[1] Fireworks: Models Intelligence, Performance & Price: https://artificialanalysis.ai/providers/fireworks\\n[2] Fireworks Platform Spring 2024 Updates: https://fireworks.ai/blog/spring-update-faster-models-dedicated-deployments-postpaid-pricing\\n[3] Fireworks AI Raises $52M in Series B Funding: https://siliconvalleyjournals.com/fireworks-ai-raises-52m-in-series-b-funding-to-expand-genai-inference-platform/\\n[4] Fireworks AI: Contact Details, Revenue, Funding: https://siliconvalleyjournals.com/company/fireworks-ai/\\n[5] Fireworks AI Valued at $552 Million After New Funding Round: https://www.pymnts.com/news/investment-tracker/2024/fireworks-ai-valued-552-million-dollars-after-new-funding-round/\\n[6] Inference performance - Fireworks AI Docs: https://docs.fireworks.ai/faq/models/inference/performance\\n\\n\\n============================================================\\nSection 2: Together.ai Overview\\n============================================================\\nDescription:\\nExplores Together.ai’s role within the AI inference space. Discusses product features, integration details, user reviews, and performance metrics along with ARR revenue estimates.\\nRequires Research: \\nTrue\\n\\nContent:\\n## Together.ai Overview\\n\\nTogether.ai is a comprehensive AI acceleration platform that has quickly emerged as a significant player in the AI inference space since its founding in 2022 [1]. The platform enables developers to access over 200 AI models, offering high-performance inference capabilities with optimized infrastructure [2].\\n\\nThe company's Inference Engine, built on NVIDIA Tensor Core GPUs, delivers impressive performance metrics, achieving 117 tokens per second on Llama-2-70B-Chat models [3]. Their model offerings include high-quality options like Llama 3.3 70B Turbo and Llama 3.1 405B Turbo, with some models achieving sub-100ms latency [4].\\n\\nTogether.ai has demonstrated remarkable growth, with estimates suggesting $130M in annualized recurring revenue (ARR) in 2024, representing a 400% year-over-year increase [5]. The platform has received positive user feedback, maintaining a 4.8/5.0 rating based on 162 user reviews [6].\\n\\nThe company differentiates itself through competitive pricing and technical innovations, incorporating advanced features like token caching, load balancing, and model quantization [2]. Users particularly praise the platform's straightforward API, reliable performance, and competitive pricing compared to alternatives [7].\\n\\n### Sources\\n[1] https://siliconvalleyjournals.com/company/together-ai/\\n[2] https://www.keywordsai.co/blog/top-10-llm-api-providers\\n[3] https://www.together.ai/blog/together-inference-engine-v1\\n[4] https://artificialanalysis.ai/providers/togetherai\\n[5] https://sacra.com/c/together-ai/\\n[6] https://www.featuredcustomers.com/vendor/together-ai\\n[7] https://www.trustpilot.com/review/together.ai\\n\\n\\n============================================================\\nSection 3: Groq AI Overview\\n============================================================\\nDescription:\\nExamines Groq’s AI inference solutions with a focus on benchmark performance, inference speed, and cost efficiency. Includes an analysis of ARR revenue and how its technical performance shapes its market position.\\nRequires Research: \\nTrue\\n\\nContent:\\n## Groq AI Overview\\n\\nGroq has emerged as a significant player in the AI inference market with its innovative Language Processing Unit (LPU) technology. Independent benchmarks from ArtificialAnalysis.ai demonstrate Groq's impressive performance, with their Llama 2 Chat (70B) API achieving 241 tokens per second - more than double the speed of competing providers [1]. Their total response time for 100 output tokens is just 0.8 seconds, positioning them as a leader in inference speed [2].\\n\\nThe company's core technology, the Tensor Streaming Processor (TSP), delivers 500-700 tokens per second on large language models, representing a 5-10x improvement over Nvidia's latest data center GPUs [3]. This performance advantage has positioned Groq as a compelling alternative in the inference market, particularly for startups seeking cost-effective solutions [4].\\n\\nWith approximately 300 employees, 60% of whom are software engineers, Groq has evolved beyond hardware to become a comprehensive AI solutions provider [5]. The company is strategically positioned to capture a share of the growing inference chip market, which is projected to reach $48 billion by 2027 [6].\\n\\n### Sources\\n[1] https://groq.com/artificialanalysis-ai-llm-benchmark-doubles-axis-to-fit-new-groq-lpu-inference-engine-performance-results/\\n[2] https://groq.com/inference/\\n[3] https://sacra.com/c/groq/\\n[4] https://venturebeat.com/ai/ai-chip-race-groq-ceo-takes-on-nvidia-claims-most-startups-will-use-speedy-lpus-by-end-of-2024/\\n[5] https://www.businessinsider.com/groq-nvidia-software-advantage-cuda-moat-challenge-inference-2024-12?op=1\\n[6] https://generativeaitech.substack.com/p/groq-and-its-impact-on-ai-inference\\n\\n\\n============================================================\\nSection 4: Market Comparison and Trends\\n============================================================\\nDescription:\\nProvides a comparative analysis highlighting the strengths, weaknesses, and differentiating factors of Fireworks, Together.ai, and Groq. Discusses trends like cost, performance metrics, and revenue (ARR) estimates.\\nRequires Research: \\nTrue\\n\\nContent:\\n## Market Comparison and Trends\\n\\nThe AI inference market shows distinct positioning among key players Fireworks, Together.ai, and Groq. Fireworks AI differentiates itself through superior speed, leveraging its proprietary FireAttention inference engine for text, image, and audio processing, while maintaining HIPAA and SOC2 compliance for data privacy [1]. Together.ai has demonstrated remarkable growth, reaching an estimated $130M in annualized recurring revenue (ARR) in 2024, representing a 400% year-over-year increase [2].\\n\\nBoth Fireworks and Together.ai focus on providing high-quality open-source models that can compete with proprietary alternatives [1]. Pricing structures vary across providers, with model costs ranging from $0.20 to $3.00 per million tokens for different model sizes and capabilities [3]. Together.ai's business model benefits from GPU price commoditization, allowing them to maintain competitive token pricing while focusing on developer experience and reliable inference across diverse open-source models [2].\\n\\nGroq distinguishes itself by offering quick access to various open-source AI models from major providers like Google, Meta, OpenAI, and Mistral through the OpenRouter API platform [4]. The market shows a trend toward comprehensive platform offerings, with providers competing on factors such as model variety, inference speed, and specialized features for different use cases.\\n\\n### Sources\\n[1] Top 10 AI Inference Platforms in 2025: Comparing LLM API Providers: https://www.helicone.ai/blog/llm-api-providers\\n[2] Together AI revenue, valuation & growth rate | Sacra: https://sacra.com/c/together-ai/\\n[3] Models Leaderboard : Comparison of AI Models & API Providers - Groq AI: https://groq-ai.com/models/\\n[4] Pricing: Compare Groq API Pricing With Other API Providers: https://groq-ai.com/pricing/\\n\\n\"}}\n",
      "\n",
      "\n",
      "{'write_final_sections': {'completed_sections': [Section(name='Introduction', description='Provides a brief overview of the AI inference market, its relevance, and introduces the three key players: Fireworks, Together.ai, and Groq.', research=False, content=\"# AI Inference Market: Analysis of Fireworks, Together.ai, and Groq\\n\\nThe AI inference market is experiencing rapid evolution as companies compete to provide faster, more efficient solutions for deploying and managing AI models. This analysis examines three key players reshaping the landscape: Fireworks, Together.ai, and Groq. Each brings distinct advantages - Fireworks with its specialized features and security focus, Together.ai with its comprehensive platform and impressive growth trajectory, and Groq with its groundbreaking Language Processing Unit technology. As organizations increasingly rely on AI inference capabilities, understanding these providers' strengths and market positions becomes crucial for making informed deployment decisions.\")]}}\n",
      "\n",
      "\n",
      "{'write_final_sections': {'completed_sections': [Section(name='Conclusion', description='Summarizes key findings from the individual sections and the comparative analysis. Offers a concise distillation of the market landscape using a summary table or list to highlight major points including ARR insights.', research=False, content='## Conclusion\\n\\nThe AI inference market shows clear differentiation among key players, with each provider carving out unique value propositions. Together.ai leads in revenue growth with $130M ARR, while Fireworks AI demonstrates strong potential with its recent $552M valuation. Groq distinguishes itself through superior inference speeds, achieving up to 700 tokens per second with its LPU technology.\\n\\n| Metric | Fireworks | Together.ai | Groq |\\n|--------|-----------|-------------|------|\\n| ARR | $6M | $130M | Not disclosed |\\n| Speed (tokens/sec) | Up to 300 | Up to 117 | 500-700 |\\n| Key Differentiator | FP8 quantization | 200+ model access | LPU technology |\\n| Notable Feature | 3x faster than competitors | Token caching | Sub-second response |\\n| Target Market | Enterprise security | Developer platforms | Startup solutions |\\n\\nThe market trends indicate a shift toward comprehensive platform offerings that balance speed, cost-efficiency, and model variety. As the inference chip market approaches $48B by 2027, providers focusing on specialized hardware solutions and optimized infrastructure will likely gain competitive advantages. Success will depend on maintaining the delicate balance between performance, pricing, and platform features while addressing growing enterprise demands for security and reliability.')]}}\n",
      "\n",
      "\n",
      "{'compile_final_report': {'final_report': \"# AI Inference Market: Analysis of Fireworks, Together.ai, and Groq\\n\\nThe AI inference market is experiencing rapid evolution as companies compete to provide faster, more efficient solutions for deploying and managing AI models. This analysis examines three key players reshaping the landscape: Fireworks, Together.ai, and Groq. Each brings distinct advantages - Fireworks with its specialized features and security focus, Together.ai with its comprehensive platform and impressive growth trajectory, and Groq with its groundbreaking Language Processing Unit technology. As organizations increasingly rely on AI inference capabilities, understanding these providers' strengths and market positions becomes crucial for making informed deployment decisions.\\n\\n## Fireworks AI Overview\\n\\nFireworks AI has established itself as a significant player in the AI inference market, offering a comprehensive platform for deploying and managing AI models. The company provides access to various high-performance models, including Llama 3.1 405B and Qwen2.5 Coder 32B, which represent their highest quality offerings [1]. Their platform demonstrates impressive performance metrics, with some models achieving speeds up to 300 tokens per second for serverless deployments [2].\\n\\nThe company has gained substantial market traction, recently securing $52 million in Series B funding that values the company at $552 million [3]. With an annual revenue of $6 million and a team of 60 employees, Fireworks AI serves notable clients including DoorDash, Quora, and Upwork [4, 5].\\n\\nTheir platform differentiates itself through specialized features like FP8 quantization for large models and continuous batching capabilities [6]. Fireworks claims to offer approximately 3x faster speeds compared to competitors like Hugging Face TGI when using the same GPU configuration [2]. The company focuses on providing smaller, production-grade models that can be deployed privately and securely, rather than generic mega models [5].\\n\\n### Sources\\n[1] Fireworks: Models Intelligence, Performance & Price: https://artificialanalysis.ai/providers/fireworks\\n[2] Fireworks Platform Spring 2024 Updates: https://fireworks.ai/blog/spring-update-faster-models-dedicated-deployments-postpaid-pricing\\n[3] Fireworks AI Raises $52M in Series B Funding: https://siliconvalleyjournals.com/fireworks-ai-raises-52m-in-series-b-funding-to-expand-genai-inference-platform/\\n[4] Fireworks AI: Contact Details, Revenue, Funding: https://siliconvalleyjournals.com/company/fireworks-ai/\\n[5] Fireworks AI Valued at $552 Million After New Funding Round: https://www.pymnts.com/news/investment-tracker/2024/fireworks-ai-valued-552-million-dollars-after-new-funding-round/\\n[6] Inference performance - Fireworks AI Docs: https://docs.fireworks.ai/faq/models/inference/performance\\n\\n## Together.ai Overview\\n\\nTogether.ai is a comprehensive AI acceleration platform that has quickly emerged as a significant player in the AI inference space since its founding in 2022 [1]. The platform enables developers to access over 200 AI models, offering high-performance inference capabilities with optimized infrastructure [2].\\n\\nThe company's Inference Engine, built on NVIDIA Tensor Core GPUs, delivers impressive performance metrics, achieving 117 tokens per second on Llama-2-70B-Chat models [3]. Their model offerings include high-quality options like Llama 3.3 70B Turbo and Llama 3.1 405B Turbo, with some models achieving sub-100ms latency [4].\\n\\nTogether.ai has demonstrated remarkable growth, with estimates suggesting $130M in annualized recurring revenue (ARR) in 2024, representing a 400% year-over-year increase [5]. The platform has received positive user feedback, maintaining a 4.8/5.0 rating based on 162 user reviews [6].\\n\\nThe company differentiates itself through competitive pricing and technical innovations, incorporating advanced features like token caching, load balancing, and model quantization [2]. Users particularly praise the platform's straightforward API, reliable performance, and competitive pricing compared to alternatives [7].\\n\\n### Sources\\n[1] https://siliconvalleyjournals.com/company/together-ai/\\n[2] https://www.keywordsai.co/blog/top-10-llm-api-providers\\n[3] https://www.together.ai/blog/together-inference-engine-v1\\n[4] https://artificialanalysis.ai/providers/togetherai\\n[5] https://sacra.com/c/together-ai/\\n[6] https://www.featuredcustomers.com/vendor/together-ai\\n[7] https://www.trustpilot.com/review/together.ai\\n\\n## Groq AI Overview\\n\\nGroq has emerged as a significant player in the AI inference market with its innovative Language Processing Unit (LPU) technology. Independent benchmarks from ArtificialAnalysis.ai demonstrate Groq's impressive performance, with their Llama 2 Chat (70B) API achieving 241 tokens per second - more than double the speed of competing providers [1]. Their total response time for 100 output tokens is just 0.8 seconds, positioning them as a leader in inference speed [2].\\n\\nThe company's core technology, the Tensor Streaming Processor (TSP), delivers 500-700 tokens per second on large language models, representing a 5-10x improvement over Nvidia's latest data center GPUs [3]. This performance advantage has positioned Groq as a compelling alternative in the inference market, particularly for startups seeking cost-effective solutions [4].\\n\\nWith approximately 300 employees, 60% of whom are software engineers, Groq has evolved beyond hardware to become a comprehensive AI solutions provider [5]. The company is strategically positioned to capture a share of the growing inference chip market, which is projected to reach $48 billion by 2027 [6].\\n\\n### Sources\\n[1] https://groq.com/artificialanalysis-ai-llm-benchmark-doubles-axis-to-fit-new-groq-lpu-inference-engine-performance-results/\\n[2] https://groq.com/inference/\\n[3] https://sacra.com/c/groq/\\n[4] https://venturebeat.com/ai/ai-chip-race-groq-ceo-takes-on-nvidia-claims-most-startups-will-use-speedy-lpus-by-end-of-2024/\\n[5] https://www.businessinsider.com/groq-nvidia-software-advantage-cuda-moat-challenge-inference-2024-12?op=1\\n[6] https://generativeaitech.substack.com/p/groq-and-its-impact-on-ai-inference\\n\\n## Market Comparison and Trends\\n\\nThe AI inference market shows distinct positioning among key players Fireworks, Together.ai, and Groq. Fireworks AI differentiates itself through superior speed, leveraging its proprietary FireAttention inference engine for text, image, and audio processing, while maintaining HIPAA and SOC2 compliance for data privacy [1]. Together.ai has demonstrated remarkable growth, reaching an estimated $130M in annualized recurring revenue (ARR) in 2024, representing a 400% year-over-year increase [2].\\n\\nBoth Fireworks and Together.ai focus on providing high-quality open-source models that can compete with proprietary alternatives [1]. Pricing structures vary across providers, with model costs ranging from $0.20 to $3.00 per million tokens for different model sizes and capabilities [3]. Together.ai's business model benefits from GPU price commoditization, allowing them to maintain competitive token pricing while focusing on developer experience and reliable inference across diverse open-source models [2].\\n\\nGroq distinguishes itself by offering quick access to various open-source AI models from major providers like Google, Meta, OpenAI, and Mistral through the OpenRouter API platform [4]. The market shows a trend toward comprehensive platform offerings, with providers competing on factors such as model variety, inference speed, and specialized features for different use cases.\\n\\n### Sources\\n[1] Top 10 AI Inference Platforms in 2025: Comparing LLM API Providers: https://www.helicone.ai/blog/llm-api-providers\\n[2] Together AI revenue, valuation & growth rate | Sacra: https://sacra.com/c/together-ai/\\n[3] Models Leaderboard : Comparison of AI Models & API Providers - Groq AI: https://groq-ai.com/models/\\n[4] Pricing: Compare Groq API Pricing With Other API Providers: https://groq-ai.com/pricing/\\n\\n## Conclusion\\n\\nThe AI inference market shows clear differentiation among key players, with each provider carving out unique value propositions. Together.ai leads in revenue growth with $130M ARR, while Fireworks AI demonstrates strong potential with its recent $552M valuation. Groq distinguishes itself through superior inference speeds, achieving up to 700 tokens per second with its LPU technology.\\n\\n| Metric | Fireworks | Together.ai | Groq |\\n|--------|-----------|-------------|------|\\n| ARR | $6M | $130M | Not disclosed |\\n| Speed (tokens/sec) | Up to 300 | Up to 117 | 500-700 |\\n| Key Differentiator | FP8 quantization | 200+ model access | LPU technology |\\n| Notable Feature | 3x faster than competitors | Token caching | Sub-second response |\\n| Target Market | Enterprise security | Developer platforms | Startup solutions |\\n\\nThe market trends indicate a shift toward comprehensive platform offerings that balance speed, cost-efficiency, and model variety. As the inference chip market approaches $48B by 2027, providers focusing on specialized hardware solutions and optimized infrastructure will likely gain competitive advantages. Success will depend on maintaining the delicate balance between performance, pricing, and platform features while addressing growing enterprise demands for security and reliability.\"}}\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Pass True to approve the report plan \n",
    "async for event in graph.astream(Command(resume=True), thread, stream_mode=\"updates\"):\n",
    "    print(event)\n",
    "    print(\"\\n\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "# AI Inference Market: Analysis of Fireworks, Together.ai, and Groq\n",
       "\n",
       "The AI inference market is experiencing rapid evolution as companies compete to provide faster, more efficient solutions for deploying and managing AI models. This analysis examines three key players reshaping the landscape: Fireworks, Together.ai, and Groq. Each brings distinct advantages - Fireworks with its specialized features and security focus, Together.ai with its comprehensive platform and impressive growth trajectory, and Groq with its groundbreaking Language Processing Unit technology. As organizations increasingly rely on AI inference capabilities, understanding these providers' strengths and market positions becomes crucial for making informed deployment decisions.\n",
       "\n",
       "## Fireworks AI Overview\n",
       "\n",
       "Fireworks AI has established itself as a significant player in the AI inference market, offering a comprehensive platform for deploying and managing AI models. The company provides access to various high-performance models, including Llama 3.1 405B and Qwen2.5 Coder 32B, which represent their highest quality offerings [1]. Their platform demonstrates impressive performance metrics, with some models achieving speeds up to 300 tokens per second for serverless deployments [2].\n",
       "\n",
       "The company has gained substantial market traction, recently securing $52 million in Series B funding that values the company at $552 million [3]. With an annual revenue of $6 million and a team of 60 employees, Fireworks AI serves notable clients including DoorDash, Quora, and Upwork [4, 5].\n",
       "\n",
       "Their platform differentiates itself through specialized features like FP8 quantization for large models and continuous batching capabilities [6]. Fireworks claims to offer approximately 3x faster speeds compared to competitors like Hugging Face TGI when using the same GPU configuration [2]. The company focuses on providing smaller, production-grade models that can be deployed privately and securely, rather than generic mega models [5].\n",
       "\n",
       "### Sources\n",
       "[1] Fireworks: Models Intelligence, Performance & Price: https://artificialanalysis.ai/providers/fireworks\n",
       "[2] Fireworks Platform Spring 2024 Updates: https://fireworks.ai/blog/spring-update-faster-models-dedicated-deployments-postpaid-pricing\n",
       "[3] Fireworks AI Raises $52M in Series B Funding: https://siliconvalleyjournals.com/fireworks-ai-raises-52m-in-series-b-funding-to-expand-genai-inference-platform/\n",
       "[4] Fireworks AI: Contact Details, Revenue, Funding: https://siliconvalleyjournals.com/company/fireworks-ai/\n",
       "[5] Fireworks AI Valued at $552 Million After New Funding Round: https://www.pymnts.com/news/investment-tracker/2024/fireworks-ai-valued-552-million-dollars-after-new-funding-round/\n",
       "[6] Inference performance - Fireworks AI Docs: https://docs.fireworks.ai/faq/models/inference/performance\n",
       "\n",
       "## Together.ai Overview\n",
       "\n",
       "Together.ai is a comprehensive AI acceleration platform that has quickly emerged as a significant player in the AI inference space since its founding in 2022 [1]. The platform enables developers to access over 200 AI models, offering high-performance inference capabilities with optimized infrastructure [2].\n",
       "\n",
       "The company's Inference Engine, built on NVIDIA Tensor Core GPUs, delivers impressive performance metrics, achieving 117 tokens per second on Llama-2-70B-Chat models [3]. Their model offerings include high-quality options like Llama 3.3 70B Turbo and Llama 3.1 405B Turbo, with some models achieving sub-100ms latency [4].\n",
       "\n",
       "Together.ai has demonstrated remarkable growth, with estimates suggesting $130M in annualized recurring revenue (ARR) in 2024, representing a 400% year-over-year increase [5]. The platform has received positive user feedback, maintaining a 4.8/5.0 rating based on 162 user reviews [6].\n",
       "\n",
       "The company differentiates itself through competitive pricing and technical innovations, incorporating advanced features like token caching, load balancing, and model quantization [2]. Users particularly praise the platform's straightforward API, reliable performance, and competitive pricing compared to alternatives [7].\n",
       "\n",
       "### Sources\n",
       "[1] https://siliconvalleyjournals.com/company/together-ai/\n",
       "[2] https://www.keywordsai.co/blog/top-10-llm-api-providers\n",
       "[3] https://www.together.ai/blog/together-inference-engine-v1\n",
       "[4] https://artificialanalysis.ai/providers/togetherai\n",
       "[5] https://sacra.com/c/together-ai/\n",
       "[6] https://www.featuredcustomers.com/vendor/together-ai\n",
       "[7] https://www.trustpilot.com/review/together.ai\n",
       "\n",
       "## Groq AI Overview\n",
       "\n",
       "Groq has emerged as a significant player in the AI inference market with its innovative Language Processing Unit (LPU) technology. Independent benchmarks from ArtificialAnalysis.ai demonstrate Groq's impressive performance, with their Llama 2 Chat (70B) API achieving 241 tokens per second - more than double the speed of competing providers [1]. Their total response time for 100 output tokens is just 0.8 seconds, positioning them as a leader in inference speed [2].\n",
       "\n",
       "The company's core technology, the Tensor Streaming Processor (TSP), delivers 500-700 tokens per second on large language models, representing a 5-10x improvement over Nvidia's latest data center GPUs [3]. This performance advantage has positioned Groq as a compelling alternative in the inference market, particularly for startups seeking cost-effective solutions [4].\n",
       "\n",
       "With approximately 300 employees, 60% of whom are software engineers, Groq has evolved beyond hardware to become a comprehensive AI solutions provider [5]. The company is strategically positioned to capture a share of the growing inference chip market, which is projected to reach $48 billion by 2027 [6].\n",
       "\n",
       "### Sources\n",
       "[1] https://groq.com/artificialanalysis-ai-llm-benchmark-doubles-axis-to-fit-new-groq-lpu-inference-engine-performance-results/\n",
       "[2] https://groq.com/inference/\n",
       "[3] https://sacra.com/c/groq/\n",
       "[4] https://venturebeat.com/ai/ai-chip-race-groq-ceo-takes-on-nvidia-claims-most-startups-will-use-speedy-lpus-by-end-of-2024/\n",
       "[5] https://www.businessinsider.com/groq-nvidia-software-advantage-cuda-moat-challenge-inference-2024-12?op=1\n",
       "[6] https://generativeaitech.substack.com/p/groq-and-its-impact-on-ai-inference\n",
       "\n",
       "## Market Comparison and Trends\n",
       "\n",
       "The AI inference market shows distinct positioning among key players Fireworks, Together.ai, and Groq. Fireworks AI differentiates itself through superior speed, leveraging its proprietary FireAttention inference engine for text, image, and audio processing, while maintaining HIPAA and SOC2 compliance for data privacy [1]. Together.ai has demonstrated remarkable growth, reaching an estimated $130M in annualized recurring revenue (ARR) in 2024, representing a 400% year-over-year increase [2].\n",
       "\n",
       "Both Fireworks and Together.ai focus on providing high-quality open-source models that can compete with proprietary alternatives [1]. Pricing structures vary across providers, with model costs ranging from $0.20 to $3.00 per million tokens for different model sizes and capabilities [3]. Together.ai's business model benefits from GPU price commoditization, allowing them to maintain competitive token pricing while focusing on developer experience and reliable inference across diverse open-source models [2].\n",
       "\n",
       "Groq distinguishes itself by offering quick access to various open-source AI models from major providers like Google, Meta, OpenAI, and Mistral through the OpenRouter API platform [4]. The market shows a trend toward comprehensive platform offerings, with providers competing on factors such as model variety, inference speed, and specialized features for different use cases.\n",
       "\n",
       "### Sources\n",
       "[1] Top 10 AI Inference Platforms in 2025: Comparing LLM API Providers: https://www.helicone.ai/blog/llm-api-providers\n",
       "[2] Together AI revenue, valuation & growth rate | Sacra: https://sacra.com/c/together-ai/\n",
       "[3] Models Leaderboard : Comparison of AI Models & API Providers - Groq AI: https://groq-ai.com/models/\n",
       "[4] Pricing: Compare Groq API Pricing With Other API Providers: https://groq-ai.com/pricing/\n",
       "\n",
       "## Conclusion\n",
       "\n",
       "The AI inference market shows clear differentiation among key players, with each provider carving out unique value propositions. Together.ai leads in revenue growth with $130M ARR, while Fireworks AI demonstrates strong potential with its recent $552M valuation. Groq distinguishes itself through superior inference speeds, achieving up to 700 tokens per second with its LPU technology.\n",
       "\n",
       "| Metric | Fireworks | Together.ai | Groq |\n",
       "|--------|-----------|-------------|------|\n",
       "| ARR | $6M | $130M | Not disclosed |\n",
       "| Speed (tokens/sec) | Up to 300 | Up to 117 | 500-700 |\n",
       "| Key Differentiator | FP8 quantization | 200+ model access | LPU technology |\n",
       "| Notable Feature | 3x faster than competitors | Token caching | Sub-second response |\n",
       "| Target Market | Enterprise security | Developer platforms | Startup solutions |\n",
       "\n",
       "The market trends indicate a shift toward comprehensive platform offerings that balance speed, cost-efficiency, and model variety. As the inference chip market approaches $48B by 2027, providers focusing on specialized hardware solutions and optimized infrastructure will likely gain competitive advantages. Success will depend on maintaining the delicate balance between performance, pricing, and platform features while addressing growing enterprise demands for security and reliability."
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "final_state = graph.get_state(thread)\n",
    "report = final_state.values.get('final_report')\n",
    "Markdown(report)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "open-deep-research-env",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
